package com.atguigu.lease.common.minio;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/*
* 回顾：
 *    非springboot: 1. 加载外部的properties配置文件 @PropertySource 2.使用@Value注解单独读取
 *    springboot:   1. 直接application编写配置文件 不用加载 2. 使用@Value注解或者@ConfigurationProperties(prefix="minio")
 * 注意：读取配置参数,spring核心容器，你必须在核心容器中！！
 *    1. 直接在类上添加@Component注解，配合扫描即可！  [恶汉]
 *    2. 在使用的配置类上添加 @EnableConfigurationProperties(XxxProperties); 【懒汉】
* */
@Configuration
@EnableConfigurationProperties(MinioProperties.class)
@ConditionalOnProperty(prefix = "minio",name = "username")//当配置类中有名字为minio的key，才会生效
public class MinioConfiguration {

    @Autowired
    private MinioProperties minioProperties;

    @Bean
    public MinioClient minioClient(){
        return MinioClient.builder()
                .endpoint(minioProperties.getEndPoint())//http://47.94.86.115:9000地址名
                .credentials(minioProperties.getUsername(),minioProperties.getPassword())//账号和密码
                .build();
    }
}
